package cn.tedu.buffer;

import java.nio.ByteBuffer;

public class ByteBufferDemo {

    public static void main(String[] args) {

        // 构建ByteBuffer对象
        // 参数表示容量，实际上就是指定底层的字节数组的容量
        ByteBuffer buffer = ByteBuffer.allocate(10);
        // 获取容量位
        System.out.println(buffer.capacity());

        // 添加数据
        buffer.put("abc".getBytes());
        buffer.put("def".getBytes());
        // 获取操作位
        // System.out.println(buffer.position());

        // 挪动position
        // buffer.position(0);
        // 获取数据
        // byte b = buffer.get();
        // System.out.println(b);

        //  // 记录当前的操作位
        //  int pos = buffer.position();
        //  // 将position归零
        //  buffer.position(0);
        //  while(buffer.position() < pos){
        //      byte b = buffer.get();
        //      System.out.println((char) b);
        //  }

        // // 将当前的limit挪到position位置上
        // buffer.limit(buffer.position());
        // // 将position归零
        // buffer.position(0);
        // 将上面两步称之为翻转缓冲区，等价于
        buffer.flip();
        // while (buffer.position() < buffer.limit()) {
        while (buffer.hasRemaining()) {
            byte b = buffer.get();
            System.out.println((char) b);
        }

    }

}
